Event-processing is a key task in database applications like those handling online reservations and financial transactions. In a banking database system, multiple events relating to a customer's bank account might need to be processed and updated to the account simultaneously. For example, the bank's automatic bill-payment service might be processing a customer's payment while the customer is making a deposit into the same account at a service window. Both the bill-payment and account deposit transactions affect the account balance once processed by the bank's system and are the events that need to be processed by the system's concurrent event-processing applications. In addition, the results from these transactions must be correctly updated in the bank's database to the correctly reflect the account balance.
Increasingly, database applications are typically hosted in clustered computer environments to accommodate large and varying workloads, and to support multiple computers in an enterprise's network. Such computer clusters facilitate workload balancing and system scaling based on user requirements. For example, a bank's database system might have multiple instances of an event-processing application running on several servers supporting the bank's various branch offices. These servers are connected to the bank's network and might be at different physical locations or at the same physical location.
Alternatively, one server might function as the main processing server while the other servers act as backup systems to the main server. In addition, other instances of the event processing application might be added to the system during periods of high user demands like on Fridays or the last few days of a month when large increases in the amount of transactions are expected.
Due to the concurrency of the event-processing applications, Quality-of-Service features are generally desired to handle system problems such as fail-overs, racing conditions and poor system performance caused by unbalanced workload allocation while the events are being processed. Currently, these Quality-of-Service functions are individually developed and embedded in the event-processing applications or the middleware supporting the applications. For example, in the WebSphere products offered by the International Business Machines corporation of Armonk, N.Y., these services are handled individually and built into the products.
From the foregoing, it is appreciated that there exists a need for a system and method for providing Quality-of-Service functions to concurrent event-processing applications in a database environment without the aforementioned drawbacks.